mod file;

use file::trim_leading_spaces_from_file;
use crate::file::scan_directory;
use dialoguer::Select;
use dialoguer::theme::ColorfulTheme;


fn main() {
    // 获取当前路径
    let current_dir = std::env::current_dir().expect("加载当前路径失败!");

    // 扫描当前路径下的所有文件和目录
    let files: Vec<_> = scan_directory(&current_dir).into_iter().collect();

    if files.is_empty() {
        println!("当前目前没任何可操作文件.\n程序结束!");
        return;
    }

    // 显示文件列表并让用户选择
    println!("------ 请选择要格式化的文件 ------");
    let file_names: Vec<String> = files.iter()
        .map(|file| file.file_name().unwrap().to_string_lossy().to_string())
        .collect();

    // 使用 dialoguer 库提供上下键选择
    let selection = Select::with_theme(&ColorfulTheme::default())
        .items(&file_names)
        .default(0)
        .interact()
        .expect("选择文件加载失败!");

    // 用户选择的文件
    let selected_file = &files[selection];
    println!("正在格式: {}, 请稍等 ....", file_names[selection]);
    if let Err(e) = trim_leading_spaces_from_file(selected_file) {
        eprintln!("文件处理错误! {e}");
    }
    println!("{} 格式化完成!", file_names[selection]);
}
